import 'package:flutter/material.dart';

class NewRoute extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    FavoriteWidget widgetState = FavoriteWidget();
    Widget titleSection = Container(
      padding: const EdgeInsets.all(32.0),
      child: Row(
        children: <Widget>[
          Expanded(
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: <Widget>[
                Container(
                  padding: const EdgeInsets.only(bottom: 8.0),
                  child: Text(
                    "Oeschinen Lake Campground",
                    style: TextStyle(fontWeight: FontWeight.bold),
                  ),
                ),
                Text(
                  "Kandersteg, Switzerland",
                  style: TextStyle(
                    color: Colors.grey[500],
                  ),
                ),
              ],
            ),
          ),
          widgetState
        ],
      ),
    );

    //icon+title
    Column buildButtonColumn(IconData icon, String label) {
      Color color = Colors.blue;
      return Column(
        mainAxisSize: MainAxisSize.min,
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          Icon(
            icon,
            color: color,
          ),
          Container(
            margin: const EdgeInsets.only(top: 8.0),
            child: Text(
              label,
              style: TextStyle(
                  fontSize: 12.0, fontWeight: FontWeight.w400, color: color),
            ),
          ),
        ],
      );
    }

    //一列button组合控件
    Widget buttonSection = new Container(
      child: Row(
        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
        children: <Widget>[
          buildButtonColumn(Icons.call, "CALL"),
          buildButtonColumn(Icons.near_me, "ROUTE"),
          buildButtonColumn(Icons.share, "SHARE"),
        ],
      ),
    );

    //文本内容部分
    Widget textSection = new Container(
      padding: const EdgeInsets.all(32.0),
      child: Text(
        "Lake Oeschinen lies at the foot of the Blüemlisalp in the Bernese Alps. Situated 1,578 meters above sea level, it is one of the larger Alpine Lakes. A gondola ride from Kandersteg, followed by a half-hour walk through pastures and pine forest, leads you to the lake, which warms to 20 degrees Celsius in the summer. Activities enjoyed here include rowing, and riding the summer toboggan run.",
        softWrap: true,
      ),
    );

    //图片部分
    Widget imageSection = new Container(
      child: Image.asset(
        "images/moutant.jpg",
        width: 600.0,
        height: 240.0,
        fit: BoxFit.cover,
      ),
    );

    //所有部分
    Widget totalViews = new ListView(
      children: <Widget>[
        imageSection,
        titleSection,
        buttonSection,
        textSection,
      ],
    );

    return new MaterialApp(
      title: "Flutter Demo",
      theme: new ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text("DetailPage"),
        ),
        body: totalViews,
        floatingActionButton: FloatingActionButton(
          tooltip: 'Increment',
          child: Icon(Icons.add),
          onPressed: () {},
//          onPressed: widgetState.favoriteWidgetState.onPressed(),
        ),
      ),
    );
  }
}

class FavoriteWidget extends StatefulWidget {
  var favoriteWidgetState = new FavoriteWidgetState();

  @override
  State<StatefulWidget> createState() {
    return favoriteWidgetState;
  }
}

class FavoriteWidgetState extends State<FavoriteWidget> {
  int _favoriteCount = 41;
  bool _isFavorited = true;

  void onPressed() {
    setState(() {
      if (_isFavorited) {
        _favoriteCount -= 1;
        _isFavorited = false;
      } else {
        _favoriteCount += 1;
        _isFavorited = true;
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return new Row(
      children: <Widget>[
        IconButton(
          icon: (_isFavorited
              ? new Icon(Icons.star)
              : new Icon(Icons.star_border)),
          color: Colors.red[500],
          onPressed: onPressed,
        ),
        SizedBox(
          child: Container(
            child: Text("$_favoriteCount"),
          ),
        ),
      ],
    );
  }
}
